package pe.edu.claretiano.admisionmatricula.matricula.daoimpl;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;

import pe.edu.claretiano.admisionmatricula.bean.Vacante;
import pe.edu.claretiano.admisionmatricula.factory.MyBatisConnectionFactory;
import pe.edu.claretiano.admisionmatricula.matricula.dao.VacanteDao;


public class VacanteDaoImpl implements VacanteDao {
	
	private final static Logger logVacanteDaoImpl = Logger.getLogger(VacanteDaoImpl.class);

	private SqlSessionFactory sqlSessionFactory;

	public VacanteDaoImpl() {
		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
	}

	@Override
	public List<Vacante> listaTurnoVacante(Vacante vacante) {
		SqlSession session = sqlSessionFactory.openSession();
		List<Vacante> lstTurnoVacante = new ArrayList<Vacante>();
		
		try {
			lstTurnoVacante = (List<Vacante>) session.selectList("Vacante.listarTurnoVacante", vacante);
		} catch (Exception ex) {
			logVacanteDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return lstTurnoVacante;
	}

	@Override
	public List<Vacante> listaSeccionVacante(Vacante vacante) {
		SqlSession session = sqlSessionFactory.openSession();
		List<Vacante> lstSeccionVacante = new ArrayList<Vacante>();
		
		try {
			lstSeccionVacante = (List<Vacante>) session.selectList("Vacante.listarSeccionVacante", vacante);
		} catch (Exception ex) {
			logVacanteDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return lstSeccionVacante;
	}

	@Override
	public Vacante obtenerDisponibilidad(Vacante vacante) {
		SqlSession session = sqlSessionFactory.openSession();
		Vacante objVacante = null;
		
		try {
			objVacante = (Vacante) session.selectOne("Vacante.listarVacante", vacante);
		} catch (Exception ex) {
			logVacanteDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return objVacante;
	}

	@Override
	public Integer updateCantVacante(Vacante vacante) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado = 0;
		try {
			resultado = session.update("Vacante.updateCantVacante",vacante);
			session.commit();
		} catch (Exception ex) {
			logVacanteDaoImpl.error(ex.getMessage());
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}

}

